package com.song.dao;




import com.song.exception.expressException.ExpressCodeException;
import com.song.exception.expressException.ExpressNumberException;
import com.song.polo.Express;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
@Repository
public interface ExpressDao {
    /**
     * 查询快递控制台信息
     * @return 信息的集合
     */
    public Map<String, Object> expressConsole();

/**
     * 查询所有的快递信息
     * @param limit 判断是否分页 true 分页
     * @param pageIndex 分页时的起始索引
     * @param pageSize 每次分页的显示数据数
     * @return 快递信息集合
     */

    public List<Express> selectExpress(Boolean limit, Integer pageIndex, Integer pageSize);


/**
     * 通过收件人手机号查询快速信息
     * @param receiverPhone 收件人手机号
     * @return 收件人的所有快递信息
     */

    public List<Express> selectByPhone(String receiverPhone);


/**
     * 通过验证码查询快递信息
     * @param code 收件人的验证码
     * @return 快递信息对象*/


    public Express selectByCode(String code);

/**
     * 通过快递编号查询快递信息
     * @param expressId 快递编号
     * @return 查询到的快递信息*/


    public Express selectById(Integer expressId);

/**
     * 通过快递单号查询快递
     * @param expressNumber 快递单号
     * @return 快递信息*/


    public Express selectByNumber(String expressNumber);

/**
     * 新增快递
     * @param express 新增的快递信息对象
     **/


    public void insertExpress(Express express) throws ExpressNumberException, ExpressCodeException;



/**
     * 修改快速信息
     * @param  express 快递单号
     *@return 1成功 2失败*/


    public Integer updateExpress(Express express) throws ExpressNumberException;

/**
     * 删除快速信息
     *
     * @param expressId 快递ID
     * @return 1成功 2失败*/


    public Integer deleteExpress(Integer expressId);


    /** 通过手机号查询未取快递
     * @param userPhone 手机号
     * @param status 快递状态
     * @return 快递信息集合*/


  /*  public List<Express> selectExpress(String userPhone,Integer status);*/

/**
     * 通过code更新快递状态
     * @param code 快递验证码
     * @return true 成功*/


  /*  public Boolean updateStatus(String code);*/

/**
     * 通过手机号查询未取快递
     *
     * @param writerPhone 录入人手机号
     * @param status    快递状态
     * @return 快递信息集合
     */

  /*  public List<Express> selectExpressByWriterPhone(String writerPhone, Integer status);*/


}
